<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;
use DB;
use Hash;
use Config;
use Mail;
use Gregwar\Captcha\CaptchaBuilder;
use Session;
use App\Http\Requests;
use App\Http\Requests\RegisterRequest;
use App\Http\Controllers\Controller;
use App\Http\Requests\LoginRequest;
class LoginController extends Controller
{
    /**
    *   后台登录页面
    *   /admin/login/login
    */ 
    public function getLogin() {

        // 加载登录页面
        return view('login.login');
    }

    /**
    *   后台执行登录
    *   /admin/login/dologin
    */ 
    public function postDologin(LoginRequest $request) {

        // 查询信息
        $user = DB::table('user') -> where('username',$request->input('username')) -> first();

        // 判断用户密码是否和数据库的密码一致
        if(Hash::check($request->input('password'),$user['password'])) {
            echo '登录成功';
            // 登录成功存入session
            session(['adminuser' => $user]);
            return redirect('/admin') -> with('success','登录成功');
        }else {
            return back() -> with('error','抱歉，登录失败');
        }

    }

    /**
    *   退出登录
    *   /admin/login/logout
    */ 
    public function getLogout() {

        // 清空session信息
        session() -> forget('adminuser');
        return redirect('/admin');
    }

    /**
    *   前台注册
    *   /login/register
    */ 
    public function register() {

        // 加载注册模板
        return view('login.register');
    }

    /**
    *   测试验证码
    */ 
    public function code() {

        // 清空输出缓存区
        ob_clean();
        //生成验证码图片的Builder对象，配置相应属性
        $builder = new CaptchaBuilder;
        //可以设置图片宽高及字体
        $builder->build($width = 100, $height = 40, $font = null);
        //获取验证码的内容
        $phrase = $builder->getPhrase();

        //把验证码永久存入session
        session(['vcode'=> $phrase]);
        //生成图片
        header("Cache-Control: no-cache, must-revalidate");
        header('Content-Type: image/jpeg');
        $builder->output();
        // die();
    }

    /**
    *   前台执行注册
    *   /login/doregister
    */ 
    public function doregister(RegisterRequest $request) {
        
        $data = $request -> only(['username','email','password']);
        // 判断验证码是否一致
        if($request['code']!=session('vcode')) {
            return back() -> with('error','验证码错误');
        }

        // 数据处理
        $data['password'] = Hash::make($data['password']);
        $data['token'] = str_random(50);
        $data['status'] = 0;

        
        // 执行添加
       
        if($id = DB::table('user') -> insertGetId($data)) {
            // 注册成功,发送激活码
                $this -> mail($id,$data['token'],$data['email']);
                return redirect('login/homelogin');
        } else {
            return back() -> with('error','注册失败');
        }

        
    }

    // 测试邮件发送
    private function mail($id,$token,$email) {

        Mail::send('email.active', ['id' => $id,'token' => $token], function ($message) use ($email) {
            $message->to($email)->subject('激活邮件!');
        });
    }

    /**
    *   激活邮件
    *   /login/active
    */ 
    public function active(Request $request) {
        // echo '请使用激活码激活';
        dd($request -> all());
    }

    /**
    *   前台登录
    *   /login/homelogin
    */ 
    public function homelogin() {
        echo '登录成功';
    }
}
